package com.imooc.exceptions;

import com.imooc.grace.result.GraceJSONResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author 啊昌
 * @date 2025/9/11 22:13
 * GraceExceptionHandler Controller拦截处理
 */
@ControllerAdvice
public class GraceExceptionHandler {

	/**
	 * 处理自定义异常的全局异常处理器
	 * @param e 自定义异常对象
	 * @return 包含异常状态信息的JSON结果对象
	 */
	@ExceptionHandler(MyCustomException.class)
	@ResponseBody
	public GraceJSONResult returnMyCustomException(MyCustomException e) {
		// 打印异常堆栈信息到控制台
		e.printStackTrace();
		// 返回封装了异常状态的JSON结果
		return GraceJSONResult.exception(e.getResponseStatusEnum());
	}

}
